package com.cn.wanxi.util;

import com.cn.wanxi.dao.CompanyDao;

import java.io.*;
import java.net.PortUnreachableException;
import java.util.List;

public class IOTool {
    private IOTool() {
    }//不然别人创建对象

    /**
     * 创建文件之前，应该确定文件夹是否存在，如果不存在则先创建文件夹在创建文件
     */
    public static File createFile(String path, String fileName) {

        File directory = new File(path);
        if (!directory.exists()) {
            directory.mkdirs();
        }
        File file = new File(path, fileName);
        try {
            file.createNewFile();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return file;
    }

    /**
     * 写入数据，写在哪里呢？所以需要一个文件
     * 请问抽象类可以创建对象吗？
     */
    public static void writeFile(File file, List<String> data) {
//        找到需要写入的文件流
//        input输入流（硬盘里面--》内存）：output输出(内存里面--》硬盘)

        try {
//            InputStream inputStream = new FileInputStream(file);
//            inputStream.
            OutputStream outputStream = new FileOutputStream(file);
//            怎么将字符串写进去，要么将字符串转换为整型，要么转换为数组byte[]
//            String value="../img/logo.jpg";
//            怎么将字符串转换为整型？
//            只有整数才能转换为整型
//            int aa= Integer.parseInt(value);
//            System.out.println(aa);
//            怎么将字符串转换为byte数组？
//            byte[] bb=value.getBytes();
//            bb=value.getBytes();
//            面试时，问字符占几个字节？在不同的编码情况下占的字节数是多少？
//
            String split = "\r\n";// \n  \t  \r
//            String[] data = {};
            for (int i = 0; i < data.size(); i++) {
                outputStream.write(data.get(i).getBytes());
                outputStream.write(split.getBytes());
            }
//            System.out.println(split.getBytes().length);
//            outputStream.write(CompanyDao.LOGO.getBytes());
//            outputStream.write(split.getBytes());
//            outputStream.write(CompanyDao.PHONE.getBytes());
//            outputStream.write(split.getBytes());
//            outputStream.write(CompanyDao.ADDRESS.getBytes());
//            outputStream.write(split.getBytes());
//            outputStream.write(CompanyDao.EMAIL.getBytes());
//            outputStream.write(split.getBytes());
//            outputStream.write(CompanyDao.NET.getBytes());
//            outputStream.write(split.getBytes());
//            outputStream.write(CompanyDao.VERSION.getBytes());
//            outputStream.write(split.getBytes());
//            outputStream.write(CompanyDao.LINE_PHONE.getBytes());
//            outputStream.write(split.getBytes());
// 当变量为局部变量时，只要用完，内存里面就不会存在空间

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    /**
     * 字符流读取
     *
     * @param file
     */
    public static String readCharFile(File file) {
        StringBuilder result = new StringBuilder();
        try {
            Reader reader = new FileReader(file);
            int read = 0;

            while ((read = reader.read()) != -1) {
                result.append((char) read);
            }

//            System.out.println("--------------");
//            System.out.println(result);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return String.valueOf(result);
    }
}
